package com.hspedu.seckill.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author 兔兔鑫
 * @version 1.0
 * RespBean：响应返回到前端的信息，可能包含一些信息：user。
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RespBean {

    private long code;
    private String message;
    private Object obj; //可能携带一些数据

    /*
    创建静态方法，可以不用创建对象直接调用。
     */
    //成功后-同时携带数据obj
    public static RespBean success(Object data) {
        return new RespBean(RespBeanEnum.SUCCESS.getCode(), RespBeanEnum.SUCCESS.getMessage(), data);

    }

    /*
    成功响应类型是固定直接调用SUCCESS.getCode().
    错误响应类型是由传递进来的参数respBeanEnum决定的,respBeanEnum.getCode()来动态获取具体的错误类型的代码.
     */

    //成功后-不携带数据
    public static RespBean success() {
        return new RespBean(RespBeanEnum.SUCCESS.getCode(), RespBeanEnum.SUCCESS.getMessage(), null);

    }

    //失败各有不同-返回失败信息时，不携带数据
    public static RespBean error(RespBeanEnum respBeanEnum) {
        return new RespBean(respBeanEnum.getCode(), respBeanEnum.getMessage(), null);
    }

    //失败各有不同-返回失败信息时，同时携带数据
    public static RespBean error(RespBeanEnum respBeanEnum, Object data) {
        return new RespBean(respBeanEnum.getCode(), respBeanEnum.getMessage(), data);
    }
}
